xlv.obj.pxml={
	extend:function(){
	}, 
	implement:function(){
	},
	create:function(tag){
		var div=document.createElement((tag||'div'));
		div.setAttribute('xlvobject','xlv.obj.pxml');
		return div;			
	},
	properties:{
		blankString:'--blank--',
		completeString:'complete',
		showCancel:true,
		showToolbar:true,
		showComplete:true
	},
	method:{
		construct:function(){
			Element.addClassName(this,'class_pxml');
			var v=this.$V,p=this.$P;
			v.toolBar=xlv.util.findChild(this,{id:'pxml_toolbar'},false,false);
			if(!v.toolBar) {
				this.appendChild(v.toolBar=document.createElement('div'));
				v.toolBar.setAttribute('id','pxml_toolbar');
				this.styleFor(v.toolBar,v.toolBar.id);
			}
			v.back=xlv.util.findChild(v.toolBar,{id:'xlvid_back'},false,false);
			if(!v.back){
				v.toolBar.appendChild(v.back=document.createElement('div'));
				v.back.setAttribute('id','xlvid_back');
				v.back.appendChild(v.back_title=document.createElement('span'));
				v.back_title.setAttribute('id','xlvid_backright');
			}
			v.name=xlv.util.findChild(v.toolBar,{id:'xlvid_name'},false,false);
			if(!v.name){
				v.toolBar.appendChild(v.name=document.createElement('div'));
				v.name.setAttribute('id','xlvid_name');
				this.styleFor(v.name,v.name.id);
			}
			v.cancel=xlv.util.findChild(v.toolBar,{id:'xlvid_cancel'},false,false);
			if(!v.cancel){
				v.toolBar.appendChild(v.cancel=document.createElement('img'));
				v.cancel.setAttribute('id','xlvid_cancel');
				v.cancel.src='/xlive/images/pxml/cancel.png';
				this.styleFor(v.cancel,v.cancel.id);
			}
			this.appendChild(v.viewport=document.createElement('div'));
			v.viewport.setAttribute('id','pxml_viewport');
			this.styleFor(v.viewport,v.viewport.id);
			v.viewport.appendChild(v.canvas=document.createElement('div'));
			v.canvas.setAttribute('id','pxml_canvas');
			this.styleFor(v.canvas,v.canvas.id);
		},
		initial:function(){
			var v=this.$V,p=this.$P,box;
			v.viewport=xlv.util.findChild(this,{id:'pxml_viewport'},false,false);
			v.canvas=xlv.util.findChild(this,{id:'pxml_canvas'},false,false);
			v.toolBar=xlv.util.findChild(this,{id:'pxml_toolbar'},false,false);
			v.back=xlv.util.findChild(v.toolBar,{id:'xlvid_back'},false,false);
			v.back_title=xlv.util.findChild(v.toolBar,{id:'xlvid_backright'},false,false);
			v.name=xlv.util.findChild(v.toolBar,{id:'xlvid_name'},false,false);
			v.cancel=xlv.util.findChild(v.toolBar,{id:'xlvid_cancel'},false,false);
			if(!this.$P.showCancel)v.cancel.style.display='none';
			if(!this.$P.showToolbar)v.toolBar.style.display='none';
			v.currentBox=null;
			this.addEventHandler('click','_click');
			this.addEventHandler('mousedown','_mousedown');
			if(v.back_title)xlv.util.setElementValue(v.back_title,p.completeString);
			this._checkTitleWidth();
		},
		_mousedown:function(event){
			var target=event.target;
			if(target.id=='xlvid_input_button'){
				event.stop();
				var item=this.targetElement(target,{id:'xlvid_item'});
				var input=xlv.util.findChild(item,{tag:'input'},false,false);
				var editing=Element.hasClassName(item,'editing');
				if(!editing)input.focus();
				else input.blur();
				return;
			}
		},
		_click:function(event){
			var target=event.target;
			if(target.id=='xlvid_back'||target.id=='xlvid_backleft'||target.id=='xlvid_backright'){
				event.stop();
				var prev=xlv.util.findPrevSibling(this.$V.currentBox,{id:'pxml_box'});
				if(prev) return this.back();
				if(!this._commitBox(this.$V.currentBox))return;
				return this.complete();
			}
			if(target.id=='xlvid_cancel'){
				event.stop();
				return this.cancel();
			}
			var item=this.targetElement(target,{id:'xlvid_item'});
			if(item){
				if(target.id=='xlvid_exec_method'){
					event.stop();
					var method=item.pNode.getAttribute('methodName');
					if(method){
						if(this[method]) this[method]();
						else alert('methodName not found :'+method);
						return;
					}
				}
				if(Element.hasClassName(item,'advanced') && item.pNode) {
					event.stop();
					this._createBox(item.pNode);
					return;
				}
				var pxml=item.pNode.getAttribute('pxml');
				if(pxml=='select' && Element.hasClassName(item,'item_node')){
					event.stop();
					var multi=item.pNode.getAttribute('multiple');
					if(multi=='true'){
						Element.toggleClassName(item,'checked');
						var sbs = xlv.util.children(item.parentNode,{tag:item.tagName},false);
						var options='';
						for(var i=0;i<sbs.length;++i){
							if(Element.hasClassName(sbs[i],'checked')){
								var optval=(sbs[i].option||'');
								if(item.pNode.getAttribute('showValue')=='true')optval +='('+sbs[i].optval+')';
								options += ((options!='')?',':'')+optval;
							}
						}
						xlv.util.setXmlText(item.pNode,options);
					}else{
						var sbs = xlv.util.siblings(item,{tag:item.tagName});
						for(var i=0;i<sbs.length;++i)Element.removeClassName(sbs[i],'checked');
						Element.addClassName(item,'checked');
						var optval=(item.option||'');
						if(item.pNode.getAttribute('showValue')=='true')optval +='('+item.optval+')';
						xlv.util.setXmlText(item.pNode,optval);
					}
					return;
				}
				if(target.id=='xlvid_bool_onoff'){
					event.stop();
					Element.toggleClassName(item,'checked');
					var checked=Element.hasClassName(item,'checked');
					var t = item.pNode.getAttribute('true');
					var f = item.pNode.getAttribute('false');
					xlv.util.setXmlText(item.pNode, (checked) ? t:f);
					return;
				}
				if(target.id=='xlvid_int_add'){
					event.stop();
					var max = item.pNode.getAttribute('max');
					max = (!max && max != 0) ? Number.MAX_VALUE : max;
					var inp = xlv.util.findChild(item,{tag:'input'},false,false);
					var v = (parseInt(inp.value)||0)+1;
					if(v <= max || max==Number.MAX_VALU)inp.value=v;
					return;
				}
				if(target.id=='xlvid_int_sub'){
					event.stop();
					var min = item.pNode.getAttribute('min');
					min = (!min && min != 0) ? Number.MIN_VALUE : min;
					var inp = xlv.util.findChild(item,{tag:'input'},false,false);
					var v = (parseInt(inp.value)||0)-1;
					if(v >= min || min == Number.MIN_VALUE) inp.value=v;
					return;
				}
			}
		},
		styleFor:function(tag,id){
		},
		build:function(node){
			if(node.getAttribute('pxml')=='pxml'){
				var boxs=xlv.util.children(this.$V.canvas,{id:'pxml_box'},false,false);
				for(var i=0;i<boxs.length;++i) boxs[i].parentNode.removeChild(boxs[i]);
				this._createBox(this.$P.pNode=node);
			}
		},
		boxForToolBar:function(box){
			var node=box.pNode;
			var name=(node.getAttribute('name')||node.tagName);
			if(name)xlv.util.setElementValue(this.$V.name,name);
			var prev=xlv.util.findPrevSibling(box,{id:'pxml_box'});
			var title=(prev)?(prev.pNode.getAttribute('name')||prev.pNode.tagName):(this.$P.showComplete)?this.$P.completeString:'';
			xlv.util.setElementValue(this.$V.back_title,title);
			this.$V.back.style.display=(!prev && !this.$P.showComplete)?'none':'';
			this._checkTitleWidth();
		},
		_checkTitleWidth:function(){
			try{
				var b=this.$V.toolBar,k=this.$V.back;
				var bw=b.clientWidth-parseInt(b.style.paddingLeft||0)-parseInt(b.style.paddingRight||0);
				var kw=k.offsetWidth+parseInt(k.style.marginLeft||0)+parseInt(k.style.marginRight||0);
				this.$V.name.style.width=(bw-kw-32)+'px';
			}catch(e){}
		},
		complete:function(){
		},
		cancel:function(){
		},
		back:function(){
			var box = xlv.util.findPrevSibling(this.$V.currentBox,{id:'pxml_box'});
			if(box){
				if(!this._commitBox(this.$V.currentBox))return;
				var old=this.$V.currentBox;
				this.$V.currentBox=box;
				this._refreshBox(box);
				this._slideToBox(box,old);
			}
		},
		_slideToBox:function(box,old){
			this.boxForToolBar(box);
			var option={element:this.$V.viewport,properties:{},duration:300};
			option.properties.scrollLeft=box.offsetLeft;
			option.finished=(function(){if(old)xlv.sys.dispose(old,true);}).bind(this);
			xlv.util.styleEffect(option);
		},
		_commitBox:function(box){
			var lis=xlv.util.descendants(box,{tag:'li'},false,false);
			for(var i=0;i<lis.length;++i){
				if(Element.hasClassName(lis[i],'textarea_node')){
					var textarea = xlv.util.findChild(lis[i],{tag:'textarea'},false,false);
					if(textarea) xlv.util.setXmlText(lis[i].pNode, textarea.value);
					continue;
				}
				if(Element.hasClassName(lis[i],'rich_node')){
					var rich = xlv.util.findChild(lis[i],{xlvobject:'xlv.obj.richEditor'},false,false);
					rich.commit();
					if(rich) xlv.util.setXmlText(lis[i].pNode, rich.mvc_valueFromView());
					continue;
				}
				if(Element.hasClassName(lis[i],'input')){
					var input = xlv.util.findChild(lis[i],{tag:'input'},false,false);
					if(input) xlv.util.setXmlText(lis[i].pNode,(input.value==input.blank)?'':input.value);
					continue;
				}
				if(Element.hasClassName(lis[i],'int')){
					var input = xlv.util.findChild(lis[i],{tag:'input'},false,false);
					var v=parseInt((input.value==input.blank)?'':input.value);
					var n = lis[i].pNode.getAttribute('name');
					if(!isFinite(v)){
						alert('enter the number for the item : '+n);
						return false;
					}
					var max =lis[i].pNode.getAttribute('max');
					max = (!max && max != 0) ? Number.MAX_VALUE : max;
					var min =lis[i].pNode.getAttribute('min');
					min = (!min && min != 0) ? Number.MIN_VALUE : min;
					if(max!=Number.MAX_VALUE && v > max){
						alert(n+' : '+v+' >  max :'+max);
						return false;
					}
					if((min!=Number.MIN_VALUE) && v < min){
						alert(n+' : '+v+' < min :'+min);
						return false;
					}
					xlv.util.setXmlText(lis[i].pNode,v);
					continue;
				}
				if(Element.hasClassName(lis[i],'img_node')){
					var up = xlv.util.findChild(lis[i],{id:'xlvid_uploader'},false,false);
					if(up && up.fileCount()>0) {
						alert('press the upload button to upload file');
						return false;
					}
					continue;
				}
				if(Element.hasClassName(lis[i],'html_node')){
					var ajax=lis[i].ajax;
					if(ajax && ajax.$V.pane){
						var ok=true;
						if(ajax.$V.pane['commitBox']) ok=ajax.$V.pane.commitBox(box);
						if(ok===false) return false;
						if(ajax.$V.pane['result']){
							ok=ajax.$V.pane.result();
							if(Object.isString(ok))	xlv.util.setXmlText(lis[i].pNode,ok);
						}
					}
					continue;
				}
			}
			return this.commitBox(box);
		},
		commitBox:function(box){
			return true;
		},
		_refreshBox:function(box){
			var lis=xlv.util.descendants(box,{tag:'li'},false,false);
			for(var i=0;i<lis.length;++i){
				if(Element.hasClassName(lis[i],'select')){
					this._setItemValue(lis[i], xlv.util.getXmlText(lis[i].pNode));
					continue;
				}
				if(Element.hasClassName(lis[i],'rich')){
					var rich= xlv.util.getXmlText(lis[i].pNode);
					this._setItemValue(lis[i],rich.stripTags());
					continue;
				}
				if(Element.hasClassName(lis[i],'textarea')){
					this._setItemValue(lis[i], xlv.util.getXmlText(lis[i].pNode));
					continue;
				}
				if(Element.hasClassName(lis[i],'date')){
					var text=xlv.util.getXmlText(lis[i].pNode);
					var f=(lis[i].pNode.getAttribute('format')||'yyyy-MM-dd');
					text=(text!='')?new Date().parseDate(text).formatDate(f):text;
					this._setItemValue(lis[i],text);
					continue;
				}
				if(Element.hasClassName(lis[i],'img')){
					var text=xlv.util.getXmlText(lis[i].pNode);
					var img=xlv.util.findChild(lis[i],{id:'xlvid_img'},false,false);
					if(text==''){
						this._setItemValue(lis[i],'');
						img.style.display='none';
					}else {
						this._setItemValue(lis[i],'',true);
						img.imgSrc(text);
						img.style.display='block';
					}
					continue;
				}
				if(Element.hasClassName(lis[i],'html')){
					this._setItemValue(lis[i], xlv.util.getXmlText(lis[i].pNode));
					continue;
				}
			}
			this.refreshBox(box);
		},
		refreshBox:function(box){
		},
		_createBox:function(node){
			var v=this.$V,box;
			var box=(this.$V.currentBox)?xlv.util.findNextSibling(this.$V.currentBox,{id:'pxml_box'}):null;
			if(!box){
				var befs = (this.$V.currentBox)?xlv.util.findPrevSibling(this.$V.currentBox,{id:'pxml_box'}):null;
				var count=(!befs)?3:befs.length+3;
				var width=this.$V.viewport.clientWidth;
				var padding=8;
				if(Prototype.Browser.IE && width==0) width=this.$V.viewport.offsetWidth;
				if(this.$V.canvas.offsetWidth < count*width)this.$V.canvas.style.width=(count*width)+'px';
				v.canvas.appendChild(box=document.createElement('div'));
				box.style.width=(width-padding*2)+'px';
				box.setAttribute('id','pxml_box');
				this.styleFor(box,box.id);
				box.style.minHeight='1px';
			}
			if('pxml' == node.getAttribute('pxml')) this.pxmlForBox(node,box);
			else this.nodeForBox(node,box);
			if(this.$V.currentBox) this._commitBox(this.$V.currentBox);
			this.$V.currentBox=box;
			this._slideToBox(box);
		},
		pxmlForBox:function(node,box){
			if(box.pNode==node)return;
			box.pNode = node;
			while(box.firstChild)xlv.sys.dispose(box.firstChild,true);
			var ns=xlv.util.selectXmlNodes('child::*',node);
			var gul=null;
			for(var i =0;i<ns.length;++i){
				var pxml = ns[i].getAttribute('pxml');
				if(pxml){
					if(pxml == 'g'){
						if(gul)this._completeCreateULGroup(gul);
						gul=null;
						var subg=this._createULGroup(box,ns[i]);
						var sub=xlv.util.selectXmlNodes('child::*[@pxml]',ns[i]);
						for(var m=0;m<sub.length;++m)this._createLINode(subg,sub[m]);
						this._completeCreateULGroup(subg);
						continue;
					} 
					if(!gul) gul=this._createULGroup(box,ns[i]);
					this._createLINode(gul,ns[i]);
				}
			}
			if(gul)this._completeCreateULGroup(gul);
		},
		_completeCreateULGroup:function(gul){
		},
		nodeForBox:function(node,box){
			if(box.pNode==node)return;
			box.pNode = node;
			while(box.firstChild)xlv.sys.dispose(box.firstChild,true);
			var ul=this._createULGroup(box,node);
			var pxml=node.getAttribute('pxml');
			if(pxml=='select') this._selectNode(ul,node);
			if(pxml=='rich') this._richNode(ul,node);
			if(pxml=='textarea') this._textareaNode(ul,node);
			if(pxml=='date') this._dateNode(ul,node);
			if(pxml=='img') this._imgNode(ul,node);
			if(pxml=='html') this._htmlNode(ul,node);
			return ul;
		},
		_fixElementWidth:function(li,element,padding){
			padding=(padding||24);
			var width=0,cs=li.childNodes;
			for(var i=0; i<cs.length; i++){
				var w = (cs[i].offsetWidth) ? cs[i].offsetWidth:(xlv.util.isTag(cs[i],'img'))?24:0;
				width +=(cs[i] != element)? w:0;
			}
			element.style.width=(li.clientWidth-width-padding)+'px';
		},
		_selectNode:function(ul,node){
			var options=node.getAttribute('options');
			var values=''+(node.getAttribute('values')||node.getAttribute('options'));
			var showvalue=(node.getAttribute('showValue')=='true');
			var data=xlv.util.getXmlText(node);
			var li,img,name,value;
			var options=options.split(',');
			var values=values.split(',');
			for(var i=0;i<options.length;++i){
				ul.appendChild(li=document.createElement('li'));
				li.setAttribute('id','xlvid_item');
				li.pNode=node;
				li.option=(options[i]||'');
				li.optval=(values[i]||'');
				Element.addClassName(li, 'select_node');
				Element.addClassName(li, 'item_node');
				li.appendChild(name=document.createElement('div'));
				name.setAttribute('id','xlvid_name');
				xlv.util.setElementValue(name,li.option);
				li.appendChild(img=document.createElement('img'));
				img.setAttribute('id','xlvid_checked');
				img.src='/xlive/images/pxml/checked.png';
				
				li.appendChild(value=document.createElement('div'));
				value.setAttribute('id','xlvid_value');
				xlv.util.setElementValue(value,li.optval);
				if(!showvalue) value.style.display='none';

				Element.removeClassName(li,'checked');
				var checked=(li.option!='' && data.indexOf(li.option)>=0);
				if(checked)Element.addClassName(li,'checked');
				if(showvalue) this._fixElementWidth(li,value,64);
			}
		},
		_richNode:function(ul,node){
			var li;
			ul.appendChild(li=document.createElement('li'));
			li.setAttribute('id','xlvid_item');
			li.pNode=node;
			Element.addClassName(li, 'rich_node');
			Element.addClassName(li, 'item_node');
			var editor=xlv.obj.richEditor.create('div');
			li.appendChild(editor);
			xlv.sys.shell(editor);
			editor.$P.editable= !('true'==node.getAttribute('readonly'));
			if(!editor.$P.editable)editor.enabled(false);
			li.style.height='auto';
			editor.mvc_valueToView(xlv.util.getXmlText(node));
		},
		_textareaNode:function(ul,node){
			var li;
			ul.appendChild(li=document.createElement('li'));
			li.setAttribute('id','xlvid_item');
			li.pNode=node;
			Element.addClassName(li,'textarea_node');
			Element.addClassName(li, 'item_node');
			var textarea=document.createElement('textarea');
			li.appendChild(textarea);
			li.style.height='auto';
			textarea.style.width='98%';
			textarea.rows=10;
			textarea.cols=100;
			var cols=node.getAttribute('cols');
			if(cols)textarea.cols=cols;
			var rows=node.getAttribute('rows');
			if(rows)textarea.rows=rows;
			textarea.value=xlv.util.getXmlText(node);
			if('true'==node.getAttribute('readonly'))textarea.setAttribute('READONLY','READONLY');
		},
		_dateNode:function(ul,node){
			var li;
			ul.appendChild(li=document.createElement('li'));
			li.setAttribute('id','xlvid_item');
			li.pNode=node;
			Element.addClassName(li, 'date_node');
			Element.addClassName(li, 'item_node');
			var df=(node.getAttribute('format')||'yyyy-MM-dd');
			var center=document.createElement('center');
			li.appendChild(center);
			var div=document.createElement('div');
			center.appendChild(div);
			var cal=xlv.obj.calendar.create('div');
			center.appendChild(cal);
			xlv.sys.shell(cal);
			li.style.height='auto';
			var ds=xlv.util.getXmlText(node);
			if(ds !='') {
				var date=new Date().parseDate(ds);
				cal.setDate(date);
				xlv.util.setElementValue(div,date.formatDate(df));
			}
			cal.select_changed=function(to_item,from_item){
				var v=cal.$V;
				v.past=new Date(v.current.getTime());
				var day=xlv.util.getElementValue(to_item);
				v.current.setDate(day);
				xlv.util.setElementValue(div,v.current.formatDate(df));
				xlv.util.setXmlText(node,v.current.formatDate(df));
			};
		},
		_imgNode:function(ul,node){
			var li;
			ul.appendChild(li=document.createElement('li'));
			li.setAttribute('id','xlvid_item');
			li.pNode=node;
			Element.addClassName(li,'img_node');
			Element.addClassName(li, 'item_node');
			var fdm=node.getAttribute('dmName');
			var dm=this.getDataModel(node.getAttribute('dmName'));
			var div=document.createElement('center');
			li.appendChild(div);
			var img=document.createElement('img');
			div.appendChild(img);
			var mw=div.clientWidth*0.8;
			img.style.maxWidth=mw+'px';
			img.src=xlv.util.getXmlText(node);
			var up=xlv.obj.uploader.create();
			up.setAttribute('id','xlvid_uploader');
			div.appendChild(up);
			var prop={
    	 		showSubmit:true,
    	 		limit:1,
     			dmName:fdm,
     			methodName:'properties.upload',
     			srcImg:'/xlive/images/_upload.png'
     			};
			var pt=node.getAttribute('prompt');
			if(pt)prop.promptText=pt;
			var method={
				process:function(){
     		 		this.getDataModel().setValue(new Date().getTime()+'_','properties.upload.prefix-file-name');
     		 		this.$super('xlv.obj.uploader.process');
     		 	},
     		 	uploadResposed:function(valid,why){
     		 		if(!valid){
     		 			alert('upload failure :'+why);
     		 			return;
     		 		}
     		 		var dm=up.getDataModel();
     		 		var files=dm.xml_selectNodes('properties/upload/return/data/file');
     		 		var fn=xlv.util.getElementValue(files[0]);
     		 		fn='/gae/rst/upload/'+dm.getValue('properties.upload.prefix-file-name')+fn;
     		 		xlv.util.setXmlText(node,fn);
     		 		img.src=fn;
     		 		up.cleanUploadList();
				}
			};
     		xlv.sys.shell(up,prop,method);
			li.style.height='auto';
		},
		_htmlNode:function(ul,node){
			var li;
			ul.appendChild(li=document.createElement('li'));
			li.setAttribute('id','xlvid_item');
			li.pNode=node;
			li.style.height='auto';
			Element.addClassName(li, 'html_node');
			Element.addClassName(li, 'item_node');
			var url=node.getAttribute('url');
			var p=node.getAttribute('properties');
			var m=node.getAttribute('method');
			var prop=(p)?p.evalJSON():{};
			prop.pNode=node;
			prop.pxml=this;
			var method=(m)?p.evalJSON():{};
			var ajax=xlv.sys.newObject('ajaxPane',{autoRequest:false});
			li.appendChild(ajax);
			xlv.sys.initialize(ajax);
			ajax.request(url,prop,method);
			li.ajax=ajax;
		},
		_createULGroup:function(box,node,first){
			var div,prolog,epilog,b1,b2,tag1;
			if(first) tag1=box.firstChild;
			if(node && (prolog=node.getAttribute('prolog'))){
				if(tag1)box.insertBefore(div=document.createElement('div'),tag1);
				else box.appendChild(div=document.createElement('div'));
				Element.addClassName(div,'prolog');
				div.innerHTML=prolog;
			}
			if(tag1)box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b1');
			if(tag1) box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b2');
			if(tag1) box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b3');
			if(tag1)box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b4');
			var ul=document.createElement('ul');
			if(tag1)box.insertBefore(ul,tag1);
			else box.appendChild(ul);
			ul.pNode=(node||box.pNode);
			if(tag1)box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b4b');
			if(tag1) box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b3b');
			if(tag1) box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b2b');
			if(tag1) box.insertBefore(b1=document.createElement('div'),tag1);
			else box.appendChild(b1=document.createElement('div'));
			b1.setAttribute('id','xlvid_border_b1b');
			if(node &&(epilog=node.getAttribute('epilog'))){
				if(tag1) box.insertBefore(div=document.createElement('div'),tag1);
				else box.appendChild(div=document.createElement('div'));
				Element.addClassName(div,'epilog');
				div.innerHTML=epilog;
			}
			return ul;
		},
		_createLINode:function(ul,node){
			var src,icon,name,value,div,advance;
			var value;
			var li=document.createElement('li');
			if(ul)ul.appendChild(li);
			li.setAttribute('id','xlvid_item');
			li.pNode = node;
			//
			icon=xlv.sys.newObject('ximg');
			icon.setAttribute('id','xlvid_icon');
			icon.style.display='none';
			li.appendChild(icon);
			if(src=node.getAttribute('icon')){
				icon.style.display='block';
				xlv.sys.initialize(icon);
				icon.imgSrc(src);
			}
			li.appendChild(name=document.createElement('div'));
			name.setAttribute('id','xlvid_name');
			var n=(node.getAttribute('name') || node.tagName);
			xlv.util.setElementValue(name,n);
			//
			li.appendChild(advance=document.createElement('img'));
			advance.setAttribute('id','xlvid_advance');
			advance.src='/xlive/images/pxml/advance.png';
			//
			li.appendChild(value=document.createElement('div'));
			value.setAttribute('id','xlvid_value');
			li.valueDIV=value;
			//
			var pxml=node.getAttribute('pxml');
			Element.addClassName(li,pxml);
			Element.addClassName(li,'pxml_item');
			if(pxml=='text') this._textItem(li,node);
			if(pxml=='bool') this._boolItem(li,node);
			if(pxml=='input') this._inputItem(li,node);
			if(pxml=='int') this._intItem(li,node);
			if(pxml=='date') this._dateItem(li,node);
			if(pxml=='rich') this._richItem(li,node);
			if(pxml=='textarea') this._textareaItem(li,node);
			if(pxml=='select') this._selectItem(li,node);			
			if(pxml=='img')this._imgItem(li,node);
			if(pxml=='html')this._htmlItem(li,node);
			if(pxml=='pxml')this._pxmlItem(li,node);
			if(pxml=='exec')this._execItem(li,node);
			if(value.style.display != 'none')this._fixElementWidth(li,value,42);
			this.styleFor(li,li.id);
			return li;
		},
		_getNodeBlankString:function(node){
			return (node.getAttribute('blank')||this.$P.blankString);
		},
		_setItemValue:function(li,value,displaynone){
			if(value==''){
				value=this._getNodeBlankString(li.pNode);
				Element.addClassName(li,'blank');
			}else Element.removeClassName(li,'blank');
			if(displaynone===true) li.valueDIV.style.display='none';
			else li.valueDIV.display='inline-block';
			xlv.util.setElementValue(li.valueDIV,value);
		},
		_textItem:function(li,node){
			this._setItemValue(li,xlv.util.getXmlText(node));
		},
		_boolItem:function(li,node){
			li.valueDIV.style.display='none';
			var div;
			var t = node.getAttribute('true');
			var f = node.getAttribute('false');
			var v = xlv.util.getXmlText(node);
			var checked=(t==v);
			if(checked)li.addClassName('checked');
			li.appendChild(div=document.createElement('div'));
			div.setAttribute('id','xlvid_bool_onoff');
		},
		_inputItem:function(li,node){
			li.valueDIV.style.display='none';
			var img,input;
			li.appendChild(img=document.createElement('img'));
			img.setAttribute('id','xlvid_input_button');
			img.src='/xlive/images/pxml/input_img.png';
			li.appendChild(input=document.createElement('input'));
			input.setAttribute('id', 'xlvid_input');
			input.blank=this._getNodeBlankString(li.pNode);
			input.value=xlv.util.getXmlText(node);
			input.onfocus=(function(){
				if(this.value==this.blank) this.value='';
				Element.removeClassName(li,'blank');
				Element.addClassName(li,'editing');
			}).bind(input);
			input.onblur=(function(){
				Element.removeClassName(li,'editing');
				if(this.value.length==0){
					Element.addClassName(li,'blank');
					this.value=this.blank;
				}
			}).bind(input);
			input.onblur();
			this._fixElementWidth(li,input,48);
		},
		_intItem:function(li,node){
			li.valueDIV.style.display='none';
			var img,input;
			li.appendChild(img=document.createElement('img'));
			img.setAttribute('id','xlvid_int_add');
			img.src='/xlive/images/pxml/btn_add.png';
			li.appendChild(img=document.createElement('img'));
			img.setAttribute('id','xlvid_int_sub');
			img.src='/xlive/images/pxml/btn_sub.png';
			li.appendChild(input=document.createElement('input'));
			input.setAttribute('id', 'xlvid_input');
			input.blank=this._getNodeBlankString(li.pNode);
			input.value=xlv.util.getXmlText(node);
			input.onfocus=(function(){
				if(this.value==this.blank) this.value='';
				Element.removeClassName(li,'blank');
				Element.addClassName(li,'editing');
			}).bind(input);
			input.onblur=(function(){
				Element.removeClassName(li,'editing');
				if(this.value.length==0){
					Element.addClassName(li,'blank');
					this.value=this.blank;
				}
			}).bind(input);
			input.onblur();
			this._fixElementWidth(li,input,80);
		},
		_dateItem:function(li,node){
			if(!('true'==node.getAttribute('readonly'))) Element.addClassName(li,'advanced');
			var d,f,fd='';
			if((d=xlv.util.getXmlText(node))!=''){
				f=(node.getAttribute('format')||'yyyy-MM-dd');
				fd=new Date().parseDate(d).formatDate(f);
			}
			this._setItemValue(li,fd);
		},
		_richItem:function(li,node){
			Element.addClassName(li,'advanced');
			var rich= xlv.util.getXmlText(node);
			this._setItemValue(li,rich.stripTags());
		},
		_textareaItem:function(li,node){
			Element.addClassName(li,'advanced');
			this._setItemValue(li, xlv.util.getXmlText(node));
		},
		_selectItem:function(li,node){
			Element.addClassName(li, 'advanced');
			this._setItemValue(li, xlv.util.getXmlText(node));
		},
		_imgItem:function(li,node){
			var fdm=node.getAttribute('dmName');
			var dm=(fdm)?this.getDataModel(fdm):null;
			if(dm && !('true'==node.getAttribute('readonly'))) Element.addClassName(li,'advanced');
			var text=xlv.util.getXmlText(node);
			if(text=='') this._setItemValue(li,'');
			var img = xlv.sys.newObject('ximg');
			img.setAttribute('id','xlvid_img');
			li.appendChild(img);
			xlv.sys.initialize(img);
			if(text != ''){
				li.valueDIV.style.display='none';
				img.imgSrc(text);
			}
		},
		_htmlItem:function(li,node){
			Element.addClassName(li,'advanced');
			this._setItemValue(li, xlv.util.getXmlText(node));
		},
		_execItem:function(li,node){
			xlv.util.findChild(li,{id:'xlvid_name'},false,false).style.display='none';
			li.valueDIV.style.display='none';
			var div;
			var name = node.getAttribute('name');
			li.appendChild(div=document.createElement('div'));
			div.setAttribute('id','xlvid_exec_method');
			xlv.util.setElementValue(div,name);
			this._fixElementWidth(li,div,42);
		},
		_pxmlItem:function(li,node){
			//li.valueDIV.style.display='none';
			Element.addClassName(li,'advanced');
			this._setItemValue(li,node.getAttribute('data'));
		}
	}
};
